﻿//int TreeSize(Tree* root) {
//	if (root == NULL) {
//		return 0;
//	}
//	//遍历左子树
//	int leftsize = TreeSize(root->leftchild);
//	//遍历右子树
//	int rightsize = TreeSize(root->rightchild);
//	//返回以此结点为根结点的二叉树结点个数，此二叉树是子二叉树
//	return leftsize + rightsize + 1;
//}
//
//int LeavesNodeSize(Tree* root) {
//	if (root == NULL) {
//		return 0;
//	}
//	if (root->leftchild == NULL && root->rightchild == NULL) {
//		return 1;
//	}
//	return LeavesNodeSize(root->leftchild) + LeavesNodeSize(root->rightchild);
//}
//
//int NodeCount(Tree* root, int k) {
//	if (root == NULL) {
//		return 0;
//	}
//	if (k == 1) {
//		return 1;
//	}
//	return NodeCount(root->leftchild, k - 1) + NodeCount(root->rightchild, k - 1);
//}
//
//Tree* FoundNode(Tree* root, int x) {
//	if (root == NULL) {
//		return NULL;
//	}
//	if (root->val == x) {
//		return root;
//	}
//	Tree* leftchild = FoundNode(root->leftchild, x);
//	//当左孩子是我们要找的结点时就不往下继续遍历了，直接返回此结点
//	if (leftchild != NULL && leftchild->val == x) {
//		return leftchild;
//	}
//	Tree* rightchild = FoundNode(root->rightchild, x);
//	//当左孩子是我们要找的结点时就不往下继续遍历了，直接返回此结点
//	if (rightchild != NULL && rightchild->val == x) {
//		return rightchild;
//	}
//	//当查找不到返回NULL
//	return NULL;
//}

//int main()
//{
//	Tree* node1 = CreatNode(1);
//	Tree* node2 = CreatNode(2);
//	Tree* node3 = CreatNode(3);
//	Tree* node4 = CreatNode(4);
//	Tree* node5 = CreatNode(5);
//	Tree* node6 = CreatNode(6);
//
//	Tree* node7 = CreatNode(7);
//	Tree* node8 = CreatNode(8);
//	Tree* node9 = CreatNode(9);
//	Tree* node10 = CreatNode(10);
//	Tree* node11 = CreatNode(11);
//	Tree* node12 = CreatNode(12);
//	Tree* node13 = CreatNode(13);
//	Tree* node14 = CreatNode(14);
//	Tree* node15 = CreatNode(15);
//
//	node1->leftchild = node2;
//	node1->rightchild = node4;
//	node2->leftchild = node3;
//	node4->leftchild = node5;
//	node4->rightchild = node6;
//
//	node2->rightchild = node7;
//	node3->leftchild = node8;
//	node3->rightchild = node9;
//	node7->leftchild = node10;
//	node7->rightchild = node11;
//	node5->leftchild = node12;
//	node5->rightchild = node13;
//	node6->leftchild = node14;
//	node6->rightchild = node15;
//
//	fprintf(stdout, "%d\n", TreeSize(node1));
//	fprintf(stdout, "%d\n", LeavesNodeSize(node1));
//	fprintf(stdout, "%d\n", NodeCount(node1, 3));
//	if (FoundNode(node1, 7) != NULL) {
//		fprintf(stdout, "找到结点: %d\n", FoundNode(node1, 7)->val);
//	}
//	else {
//		puts("并无此结点");
//	}
//	return 0;
//}